"""
@Author : 合肥一元数智教育科技有限公司
@Date :  2025/2/28 10:05
@Description :  继承细节

1.子类可以继承父类所有的属性和方法
   1.1 非私有的属性和方法在子类中可以直接访问
   1.2 私有的属性和方法需要父类提供公开的操作方法

"""


class Aoo:
    public_attribute = 'public_attribute'
    __private_attribute = 'private_attribute'

    def public_method(self):
        print('Aoo  public method')

    # 定义私有化的函数  添加双下划线
    def __private_method(self):
        print('Aoo  private method')

    def set_private_attribute(self, attribute):
        self.__private_attribute = attribute

    def get_private_attribute(self):
        return self.__private_attribute

    def invoke_private_method(self):
        self.__private_method()


class Boo(Aoo):
    pass


# 创建对象
b = Boo()
# 非私有的属性和方法在子类中可以直接访问
print(b.public_attribute)
b.public_method()

# 访问私有的属性和方法需要父类提供公开的操作方法
# print(b.__private_attribute)
# b.__private_method
b.set_private_attribute('new private attribute')
print(b.get_private_attribute())
b.invoke_private_method()
